const { exec } = require("node:child_process");
const path = require("path");
const fs = require("fs-extra");

console.log("🚀 开始打包应用...");

// 创建后端的开发环境标记文件
fs.writeFileSync("backend/.env", "ENV=production");

// 0. 构建前端
console.log("🔨 构建前端应用...");
const frontendPath = path.join(__dirname, "../frontend");
exec("npm run build", { cwd: frontendPath }, (error, stdout, stderr) => {
  if (error) {
    console.error(`前端构建失败: ${error.message}`);
    return;
  }

  console.log(`🔨 前端构建成功！`);
  // 修改app-config.json中的debug为true
  try {
    const configPath = path.join(__dirname, "../app-config.json");
    const config = JSON.parse(fs.readFileSync(configPath, "utf8"));
    config.app.window.debug = true;
    fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
    console.log("✅ 已将app-config.json中的debug设置为true");
  } catch (err) {
    console.error(`❌ 修改app-config.json失败: ${err.message}`);
    return;
  }

   // 读取应用配置
  const configPath = path.join(__dirname, '../app-config.json');
  let appName = 'DeskApp';
  let icon = 'logo.ico';

  console.log(`🔨 构建应用包开始...`);

  //  打包桌面应用
  console.log("📦 打包桌面应用...");
  // 移除 data 目录的打包，让日志独立存在
  // 构建打包命令 - 移除data目录的打包，让日志独立存在
  const pyInstallerCmd = `pyinstaller --onefile --windowed --name ${appName} --add-data "frontend/dist;frontend/dist" --add-data "backend/.env;backend" --add-data "backend;backend" --icon ${icon} --clean main.py`;
  
  exec(pyInstallerCmd,
      (pyError, pyStdout, pyStderr) => {
      if (pyError) {
        console.error(`打包失败: ${pyError.message}`);
        return;
      }
      console.log(pyStdout);
      console.log('✅ 应用打包完成！');
      console.log('📁 应用位于 dist/ 目录');

    }
  );
});
